This invention relates generally to a computer method and system for device driver management, and more particularly, to a computer method and system for integrating a compression system with an operating system.
As a general rule of thumb, a user of a computer system will eventually run out of secondary storage space. Therefore, it is always desirable to have new methods of increasing a secondary storage volume""s storage capacity. One traditional method of increasing a volume""s storage capacity is manually directing the operating system to delete unnecessary data from the volume, thereby freeing space for new data. This method is undesirable because often a user will make a hasty decision about what data should be deleted and then regret that decision later. Additionally, sometimes all of the data on a volume may be important so as to preclude their deletion.
Another method of increasing the storage capacity of a file-based volume is compressing individual files and storing the compressed files on the volume. Drawbacks of this method include the requirement that users must explicitly compress a file to save space, and must explicitly decompress a file before it can be used.
Yet another method of effectively increasing the storage capacity of a file-based volume is dynamically compressing files, storing the compressed files, and then decompressing the files as they are retrieved. Compression systems utilizing this method have typically taken the form of an add-on package to an operating system. These compression systems are typically installed as a device driver with a drive letter assigned. The compression systems typically store the compressed files in a xe2x80x9ccompressed volume.xe2x80x9d The compressed volume is a single file (a xe2x80x9ccompressed volume filexe2x80x9d) stored on a host volume along with other files or directories. A compressed volume is treated as a logical volume with its own device driver through which the compressed volume file is accessed. Like other volumes in the computer system, each compressed volume and host volume is assigned a unique drive letter (e.g., A, B, C, and so on). Thus, if a compressed volume file is stored on a host volume that is assigned drive letter D, and the compressed volume is assigned to drive letter E, then references to drive letter E will access the files stored in the compressed volume file that is itself stored on the host volume with drive letter D.
FIG. 1 is a block diagram of a conventional computer system 100. The computer system 100 comprises a read-only memory (ROM) device 101, a central processing unit (CPU) 104, a removable volume drive 105 (i.e., a floppy disk drive), a fixed volume drive 106 (i.e., a hard disk drive), and a random access memory (RAM) device 107. A boot program and a basic input/output system (ROM-BIOS) 103 are stored on the ROM device 101. An operating system 110, such as MS-DOS 5.0 by Microsoft Corporation, is shown stored on the fixed volume, but can also be stored on the removable volume.
The installing of device drivers, such as compression drivers, typically occurs during system initialization. During system initialization, the operating system installs device drivers for both standard and non-standard devices that are specific to the particular hardware configuration of the computer system. For example, standard devices are typically two floppy disk drives and a hard disk drive. The device drivers for these standard devices are included with and installed automatically by the operating system. In MS-DOS, these standard device drivers are referred to as IO.SYS drivers. If a computer system includes non-standard devices, such as a CD-ROM drive, then a device driver for each non-standard device is specified in a configuration file. In MS-DOS, this file is named xe2x80x9cCONFIG.SYS.xe2x80x9d The CONFIG.SYS file is a user-configurable text file containing commands that are executed each time the computer system is initialized. The commands instruct the operating system how to handle certain operations and devices. For each non-standard device, a user supplies a device driver and specifies it in the CONFIG.SYS file to enable the operating system to install the appropriate device driver. Table 1 contains sample commands commonly found in the CONFIG.SYS file.
The commandxe2x80x9cdevice=xe2x80x9d specifies that the following file name is the name of a device driver that is to be installed. As the CONFIG.SYS file is processed, the operating system installs a device driver by loading and initializing the device driver. As part of the installation, one or more drive letters may be assigned to the device driver.
During initialization, the device driver specifies the number of drives that are controlled by it. A single device driver can control multiple drives. The operating system uses that number of drives to assign drive letters. The operating system assigns the next drive letters currently available in the computer system. For example, if the last assigned drive letter is E and the device driver being installed supports four drives, then the operating system will assign the drive letters F, G, H, and I to the device driver. The drive letter assignments are thus dependent upon the order of the device commands in the CONFIG.SYS file.
Typical computer systems utilizing compressed volumes utilize a compression system device driver to interface with a compressed volume file. For example, the line xe2x80x9cdevice=COMPRESS.SYS,xe2x80x9d if placed in the CONFIG.SYS file, would cause the compression system device driver contained in the COMPRESS.SYS file to be installed. The operating system assigns a unique drive letter to the compressed volume.
The assignment of drive letters may be important because computer programs, when configured, typically expect certain devices to be assigned certain drive letters. If the device is assigned different drive letter, then the program does not work properly. The program can be reconfigured to expect a different drive letter, but reconfiguration can be time-consuming. Alternatively, a user may be required to reassign drive letters manually to correspond to the expected assignment.
Those skilled in the art will appreciate the problems that can arise when compression systems are installed as a device driver specified in the CONFIG.SYS file. For example, the presence of the extra compressed volume device may change drive letter assignments of other non-standard device drivers. Also, a user may inadvertently delete the command specifying the compression system device driver or change the parameters of the command resulting in the compressed volume being inaccessible.
Problems can also arise when a user instructs the computer system to compress data on a host volume (e.g., the C drive). Compression systems typically compress all of the data stored on the volume and store the compressed data in a compressed volume file. The operating system then assigns a drive letter (e.g., D drive) to the compressed volume. When the programs executing on the computer system attempt to reference a compressed file with the drive letter of the host volume, an invalid file reference will occur because the compressed file is accessible only through the compressed volume. For this reason, the drive letters for the compressed volume (D) and its host volume (C) are usually swapped so that the compressed volume is identified by drive letter C and the host volume is identified by drive letter D. Typically, compression systems swap drive letters by placing a command line in the CONFIG.SYS file immediately after the compression system is loaded. However, a user may inadvertently remove this swapping command.
Yet another problem with installing compression systems is the potential for invalid file references. If a compressed volume contains files required for system initialization and, for some reason, the data on the compressed volume could not be accessed, then the computer system would not be usable. To minimize the possibility that the computer system will be rendered temporarily unusable, compression systems maintain a duplicate copy of system files in the host volume and the compressed volume. The size of these duplicate files may be several megabytes.
Aside from wasting storage space by duplicating files, this method is error-prone because the duplicate files are often updated improperly; that is, a user will typically update one version of a file and forget to update the duplicate copy. FIG. 2 is a block diagram of a compressed volume file 112 and its host volume 114. The host volume 114 may be any secondary storage device. The compressed volume file 112 and its host volume 114 contain duplicate copies of the IO.SYS, MSDOS.SYS, COMMAND.COM, CONFIG.SYS, AUTOEXEC.BAT files, compression software, device drivers loaded during processing of the CONFIG.SYS file, and programs executed during processing of the AUTOEXEC.BAT file.
The present invention provides a method in a computer system of integrating a compression system with an operating system. In preferred embodiments, the computer system preferably comprises a memory device and a storage devices. A user-supplied device driver is provided for non-standard devices to enable the computer system to communicate with the devices. During initialization of the computer system, the compression system is installed prior to installing any non-standard device drivers. When installing non-standard device drivers, the drive letters assigned to the previously installed compressed volumes are reassigned to ensure the non-standard devices are assigned expected drive letters. Also, when installing the compression system, a pending mount list is maintained for those compressed volumes that cannot yet be mounted. After each non-standard device driver is installed, the pending mount list is checked to determine if any compressed volumes can be mounted. When the non-standard device drivers are installed, drive letters are assigned. If the drive letter is not the expected drive letter, then a drive letter assignment scheme is provided to reassign the drive letters.